package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.entity.SysUser;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 支出对象 expenditure
 *
 * @author ruoyi
 * @date 2021-08-10
 */
public class Expenditure extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    private Long id;

    /**
     * 支出类型 0：工资，1：办公用品，2：交通（出差），3：其他
     */
    @Excel(name = "支出类型 0：工资，1：办公用品，2：交通", readConverterExp = "出=差")
    private Integer expenditureType;

    /**
     * 支出时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "支出时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date expenditureTime;

    /**
     * 支出金额
     */
    @Excel(name = "支出金额")
    private BigDecimal expenditureAmount;

    /**
     * 支出备注
     */
    @Excel(name = "支出备注")
    private String expenditureNotes;

    /**
     * 是否发票
     */
    @Excel(name = "是否发票")
    private Integer isBill;

    /**
     * 支出凭证urls
     */
    @Excel(name = "支出凭证urls")
    private String expenditureUrls;

    /**
     * 报销时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "报销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date reimbursementTime;

    /**
     * 报销凭证urls
     */
    @Excel(name = "报销凭证urls")
    private String reimbursementUrls;

    /**
     * 报销人id
     */
    @Excel(name = "报销人id")
    private Long reimbursementerId;

    /**
     * 报销人
     */
    @Excel(name = "报销人")
    private SysUser reimbursementer;



    /**
     * 是否通过
     */
    @Excel(name = "是否通过")
    private Boolean isPass;



    /**
     * 审核人id
     */
    @Excel(name = "审核人id")
    private Long auditerId;


    /**
     * 审核人
     */
    @Excel(name = "审核人")
    private SysUser auditer;


    /**
     * 审核时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date auditerTime;

    /**
     * 审核备注
     */
    @Excel(name = "审核备注")
    private String auditerNotes;

    /**
     * 是否删除
     */
    @Excel(name = "是否删除")
    private Integer isDel;

    /**
     * 创建人
     */
    @Excel(name = "创建人")
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新人
     */
    @Excel(name = "更新人")
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setExpenditureType(Integer expenditureType) {
        this.expenditureType = expenditureType;
    }

    public Integer getExpenditureType() {
        return expenditureType;
    }

    public void setExpenditureTime(Date expenditureTime) {
        this.expenditureTime = expenditureTime;
    }

    public Date getExpenditureTime() {
        return expenditureTime;
    }

    public void setExpenditureAmount(BigDecimal expenditureAmount) {
        this.expenditureAmount = expenditureAmount;
    }

    public BigDecimal getExpenditureAmount() {
        return expenditureAmount;
    }

    public void setExpenditureNotes(String expenditureNotes) {
        this.expenditureNotes = expenditureNotes;
    }

    public String getExpenditureNotes() {
        return expenditureNotes;
    }

    public void setIsBill(Integer isBill) {
        this.isBill = isBill;
    }

    public Integer getIsBill() {
        return isBill;
    }

    public void setExpenditureUrls(String expenditureUrls) {
        this.expenditureUrls = expenditureUrls;
    }

    public String getExpenditureUrls() {
        return expenditureUrls;
    }

    public void setReimbursementTime(Date reimbursementTime) {
        this.reimbursementTime = reimbursementTime;
    }

    public Date getReimbursementTime() {
        return reimbursementTime;
    }

    public void setReimbursementUrls(String reimbursementUrls) {
        this.reimbursementUrls = reimbursementUrls;
    }

    public String getReimbursementUrls() {
        return reimbursementUrls;
    }

    public void setReimbursementerId(Long reimbursementerId) {
        this.reimbursementerId = reimbursementerId;
    }

    public Long getReimbursementerId() {
        return reimbursementerId;
    }

    public void setAuditerId(Long auditerId) {
        this.auditerId = auditerId;
    }

    public Long getAuditerId() {
        return auditerId;
    }

    public void setIsDel(Integer isDel) {
        this.isDel = isDel;
    }

    public Integer getIsDel() {
        return isDel;
    }

    @Override
    public String getCreateBy() {
        return createBy;
    }

    @Override
    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    @Override
    public Date getCreateTime() {
        return createTime;
    }

    @Override
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    @Override
    public String getUpdateBy() {
        return updateBy;
    }

    @Override
    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }

    @Override
    public Date getUpdateTime() {
        return updateTime;
    }

    @Override
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Date getAuditerTime() {
        return auditerTime;
    }

    public void setAuditerTime(Date auditerTime) {
        this.auditerTime = auditerTime;
    }

    public String getAuditerNotes() {
        return auditerNotes;
    }

    public void setAuditerNotes(String auditerNotes) {
        this.auditerNotes = auditerNotes;
    }

    public SysUser getAuditer() {
        return auditer;
    }

    public void setAuditer(SysUser auditer) {
        this.auditer = auditer;
    }

    public SysUser getReimbursementer() {
        return reimbursementer;
    }

    public void setReimbursementer(SysUser reimbursementer) {
        this.reimbursementer = reimbursementer;
    }

    public Boolean getIsPass() {
        return isPass;
    }

    public void setIsPass(Boolean pass) {
        isPass = pass;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("expenditureType", getExpenditureType())
                .append("expenditureTime", getExpenditureTime())
                .append("expenditureAmount", getExpenditureAmount())
                .append("expenditureNotes", getExpenditureNotes())
                .append("isBill", getIsBill())
                .append("expenditureUrls", getExpenditureUrls())
                .append("reimbursementTime", getReimbursementTime())
                .append("reimbursementUrls", getReimbursementUrls())
                .append("reimbursementerId", getReimbursementerId())
                .append("reimbursementer", getReimbursementer())
                .append("isPass", getIsPass())
                .append("auditerId", getAuditerId())
                .append("auditer", getAuditer())
                .append("auditerTime", getAuditerTime())
                .append("auditerNotes", getAuditerNotes())
                .append("isDel", getIsDel())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
